17 research outputs found

    Danger Invariants

    Get PDF

    Sound and Automated Synthesis of Digital Stabilizing Controllers for Continuous Plants

    Get PDF
    Modern control is implemented with digital microcontrollers, embedded within a dynamical plant that represents physical components. We present a new algorithm based on counter-example guided inductive synthesis that automates the design of digital controllers that are correct by construction. The synthesis result is sound with respect to the complete range of approximations, including time discretization, quantization effects, and finite-precision arithmetic and its rounding errors. We have implemented our new algorithm in a tool called DSSynth, and are able to automatically generate stable controllers for a set of intricate plant models taken from the literature within minutes.Comment: 10 page

    Program Synthesis for Program Analysis

    Get PDF
    In this article, we propose a unified framework for designing static analysers based on program synthesis. For this purpose, we identify a fragment of second-order logic with restricted quantification that is expressive enough to model numerous static analysis problems (e.g., safety proving, bug finding, termination and non-termination proving, refactoring). As our focus is on programs that use bit-vectors, we build a decision procedure for this fragment over finite domains in the form of a program synthesiser. We provide instantiations of our framework for solving a diverse range of program verification tasks such as termination, non-termination, safety and bug finding, superoptimisation, and refactoring. Our experimental results show that our program synthesiser compares positively with specialised tools in each area as well as with general-purpose synthesisers

    Program Synthesis for Program Analysis

    Get PDF
    In this paper, we propose a unified framework for designing static analysers based on program synthesis. For this purpose, we identify a fragment of second-order logic with restricted quantification that is expressive enough to model numerous static analysis problems (e.g., safety proving, bug finding, termination and non-termination proving, refactoring). As our focus is on programs that use bit-vectors, we build a decision procedure for this fragment over finite domains in the form of a program synthesiser. We provide instantiations of our framework for solving a diverse range of program verification tasks such as termination, non-termination, safety and bug finding, superoptimisation and refactoring. Our experimental results show that our program synthesiser compares positively with specialised tools in each area as well as with general-purpose synthesisers

    Automated formal synthesis of provably safe digital controllers for continuous plants

    Get PDF
    Abstract: We present a sound and automated approach to synthesizing safe, digital controllers for physical plants represented as time-invariant models. Models are linear differential equations with inputs, evolving over a continuous state space. The synthesis precisely accounts for the effects of finite-precision arithmetic introduced by the controller. The approach uses counterexample-guided inductive synthesis: an inductive generalization phase produces a controller that is known to stabilize the model but that may not be safe for all initial conditions of the model. Safety is then verified via bounded model checking: if the verification step fails, a counterexample is provided to the inductive generalization, and the process further iterates until a safe controller is obtained. We demonstrate the practical value of this approach by automatically synthesizing safe controllers for physical plant models from the digital control literature

    DSSynth: An automated digital controller synthesis tool for physical plants

    Get PDF
    We present an automated MATLAB Toolbox, named DSSynth (Digital-System Synthesizer), to synthesize sound digital controllers for physical plants that are represented as linear time-invariant systems with single input and output. In particular, DSSynth synthesizes digital controllers that are sound w.r.t. stability and safety specifications. DSSynth considers the complete range of approximations, including time discretization, quantization effects and finite-precision arithmetic (and its rounding errors). We demonstrate the practical value of this toolbox by automatically synthesizing stable and safe controllers for intricate physical plant models from the digital control literature. The resulting toolbox enables the application of program synthesis to real-world control engineering problems

    Loop Analysis and Transformation towards STL Algorithms

    No full text
    Loops and iterations have always been a traditional error source in programming. “Off-by-one” errors, where an iteration is executed once too often or once too few, top the most common program errors. C++ provides STL algorithms to simplify the most common tasks accomplished using loops, helping to avoid these kinds of errors. Unfortunately, STL algorithms are not as commonly used as they could be. This master thesis describes the development of an Eclipse C++ Development Tools (CDT) plug-in, which encourages and supports developers to use STL algorithms. The plug-in provides semi-automatic recognition and transformation of compatible loops to corresponding STL algorithms. To achieve this, tree pattern matching algorithms are applied to the processed abstract syntax trees (AST). The final plug-in features transformation of for each and find/find if -compatible for and while loops to equiv- alent STL algorithm function calls. The respective loop body is transformed into a corresponding functor. The user can select either a C++0x lambda expression, a TR1 bind expression or a C++98 bind1st/bind2nd expression. Based on the foundation created with this project, there exist multiple extension possibilities. Additional algorithms, such as generate and transform, would greatly increase the number of use cases served. Furthermore, introducing trivial explicit function and explicit functor class functor transformations can increase the plug-in’s flexibility even further. Lastly, the tree pattern matching engine, with all its benefits, should definitely be provided to the Eclipse end users. Various applications, from tree pattern search masks to semi-automatic pattern definition based on existing codes, could support programmers in all of their daily tasks and challenges
    corecore